HTTP系列 -- 请求与响应

概述

  1. Server(服务器):服务器作为硬件来说,通常是指那些具有较高计算能力,能够提供给多个用户使用的计算机

  2. Client(客户端):是指与服务器相对应,为客户提供本地服务的程序

浏览器 + 服务器 + HTTP 三者关系

  • 浏览器负责发起请求
  • 服务器在80端口接收请求
  • 服务器负责返回内容(响应)
  • 浏览器负责下载响应内容

HTTP 的作用就是指导浏览器和服务器如何进行沟通。

请求

请求头(Request Headers)格式

1
2
3
4
1.请求类型 路径 协议/版本 // 请求行
2.key: value // 请求头
3.
4.要上传的数据 // 其他消息体

请求类型

  1. GET ==> 用于获取数据。

  2. POST ==> 用于提交数据,请求服务器进行处理。

  3. PUT ==> 向指定资源位置上传其最新内容(所有内容都更新)。

  4. PATCH ==> 用于将局部修改应用到资源。

  5. DELETE ==> 请求服务器删除Request-URI所标识的资源。

  6. HEAD ==> 向服务器发出指定资源的请求,但服务器将不传回资源的本文部分。

  7. OPTIONS ==> 使服务器传回该资源所支持的所有HTTP请求方法,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

路径

必须以 / 开头,如果不设置,默认为 / ,路径包括查询参数,但是不包括锚点

版本:

版本大部分都是 HTTP/1.1,还有HTTP/2.

请求头(key: value):

请求头定义一些操作参数。其中

1
2
3
4
5
Host: www.baidu.com  // 域名
User-Agent: // 用的什么软件发起的请求
Content-Type: application/x-www-form-urlcoded //标识了第4部分的格式,POST 请求
Content-Length:
Cookie:

第3部分:

是一个空行(回车)。

第4部分:

上传的数据,可以没有

说明

  • https 协议 ==> 所有数据在网络上请求和传输的时候都是加密的
  • http 协议 ==> 所有数据在网络上请求和传输的时候都是明文的

响应

响应头(Response Headers)格式

1
2
3
4
1.协议/版本 状态码 状态解释
2.key: value
3.
4.要下载的数据

状态码:

表示网页服务器超文本传输协议响应状态的3位数字代码。

  • 2xx成功 ==> 代表请求已成功被服务器接收、理解、并接受。

    1
    2
    a.200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回(GET)。
    b.204 No Content 服务器成功处理了请求,没有返回任何内容(创建成功 ==> POST)。
  • 3xx重定向 ==> 类状态码代表需要客户端采取进一步的操作才能完成请求。

    1
    2
    3
    a.301 Move Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。
    b.302 Found 要求客户端执行临时重定向。
    c.304 Not Modified 表示资源未被修改。在这种情况下,由于客户端仍然具有以前下载的副本,因此不需要重新传输资源。
  • 4xx客户端错误 ==> 这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。

    1
    2
    a.403 Forbidden 客户端错误,服务器已经理解请求,但是拒绝执行  它。
    b.404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发 现,但允许用户的后续请求。
  • 5xx服务器错误 ==> 表示服务器无法完成明显有效的请求。

    1
    2
    a.500 Internal Server Error 通用错误消息,服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
    b.502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

HTML 与 HTTP

所有 App 都会内置一个浏览器(WebView)用来展示 HTML,而 HTML 都是通过 HTTP 下载的,而如果你要使用 HTTP 一般都会用到 URL。